package bankteam.dao;

import java.sql.Connection;
import java.util.*;

import java.sql.*;
import java.sql.SQLException;

import bankteam.interfaces.representanteInterface;
import bankteam.modelo.Cargo;
import bankteam.modelo.GrupoBastanteo;
import bankteam.modelo.Representante;
import bankteam.modelo.TipoDocumento;
import bankteam.util.ConexionBD;

public class representanteDAO implements representanteInterface{

	@Override
	public void registraRepresentante(Representante repre)
			throws Exception {
		
		String query = "INSERT INTO representante(CodRepresentante,Ape_paterno,Ape_materno,Nombre,Cod_Tipo_Documento," +
				" Num_Documento,Cargo_CodCargo,Grupo_Bastanteo_Cod_Grupo_Bastanteo,cod_Cliente)" +
				" VALUES (?,?,?,?,?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			System.out.println("ERRO2");
			stmt.setInt(1, repre.getCodRepresentante());
			stmt.setString(2, repre.getApPaterno());
			stmt.setString(3, repre.getApMaterno());
			stmt.setString(4,repre.getNombre());
			stmt.setDouble(5,repre.getCodTipoDocumento());
			stmt.setString(6,repre.getNroDocumento());
			stmt.setInt(7, repre.getCodCargo());
			stmt.setInt(8,repre.getCodGrupBastanteo());
			stmt.setInt(9,repre.getCodCliente());
			System.out.println("OBJETPO");
			int i = stmt.executeUpdate();
			
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			System.out.println(e.getMessage());
		} 
		
		
	}

	@Override
	public void modificarRepresentante(Representante repre)
			throws Exception {

		String query = "UPDATE SET Ape_paterno=?,Ape_materno=?,Nombre=?,Cod_Tipo_Documento=?," +
				"Num_Documento=?,Cargo_CodCargo=?,Grupo_Bastanteo_Cod_Grupo_Bastanteo=?" +
				" WHERE CodRepresentante =?";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, repre.getApPaterno());
			stmt.setString(2, repre.getApMaterno());
			stmt.setString(3,repre.getNombre());
			stmt.setDouble(4,repre.getTipoDocumento().getCodDocumento());
			stmt.setString(5,repre.getNroDocumento());
			stmt.setDouble(6, repre.getCargo().getCodCargo());
			stmt.setDouble(7,repre.getGrupoBastanteo().getCodGrupoBastanteo());
			stmt.setDouble(8,repre.getCodRepresentante());
			
			int i = stmt.executeUpdate();
			
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			System.out.println(e.getMessage());
		} 
		
	}
	
	public Collection<Representante> buscarPorTipoNroDoc(int codTipoDocumento,String nroDocumento,int codRepresentante) {

		String query = "SELECT CodRepresentante FROM representante WHERE Cod_Tipo_Documento = ? and Num_Documento = ? and CodRepresentante = ?";
		Collection<Representante> lista = new ArrayList<Representante>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setInt(1, codTipoDocumento);
			stmt.setString(2, nroDocumento);
			stmt.setInt(3, codRepresentante);
			rs = stmt.executeQuery();
			while (rs.next()) {
				Representante vo = new Representante();
				vo.setCodRepresentante(rs.getInt("CodRepresentante"));
				lista.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			System.out.println(e.getMessage());
		} 
		return lista;
	}

}
